Hello China操作系统

用于物联网的操作系统

Hello China是一个面向物联网应用的操作系统,即物联网操作系统。该系统由系统软件爱好者利用业余时间开发,主要面向基于x86 CPU的IBM兼容PC机和基于ARM处理器的嵌入式平台,具备完全的自主知识产权,已发展到V1.77版本。该版本具备比较完善的内核、文件系统(FAT32/NTFS)、图形用户界面网络协议、模块化支持等功能。同时,该操作系统还具备支撑物联网应用的一些特有特性和机制,比如硬件建模能力,本地协同能力,物联网运平台抽象能力(与物联网后台系统解耦),等等。

系统介绍
秉承模块化、高可靠、快速响应的设计理念,Hello China具备可灵活裁减的模块化体系结构。可采用运行时配置和编译时配置两种方式,对操作系统内核进行裁减和重组,以满足目标系统的应用。所谓运行时配置,是指通过一个配置文件(MODCFG.INI文件),告诉操作系统在启动时加载那些模块。凡是在配置文件中指明的模块,操作系统在启动时就会加载,否则不予加载。比如GUI模块、网络模块等,都可通过这种方式动态加载和卸载。另外一种配置方式是编译时配置,即通过配置内核源代码的编译选项,可以包含或踢出某些功能模块,比如文件系统模块、设备驱动程序模块、虚拟内存管理模块等。这是一个两层次的模块化配置模式,可使得Hello China的内核尺寸灵活变动,所占用的资源也灵活伸缩,以适应特定的硬件结构。
Hello China的内核支持多线程、动态内存分配、完善的设备管理架构、完善的线程同步机制等功能,支持抢占式线程调度,支持基于向量的硬件中断模型。其文件系统可支持FAT32文件系统,支持NTFS文件系统的读取功能。也可通过扩展支持其它文件系统,比如DCFS、基于iNode的Linux操作系统文件系统等。其GUI模块采取基于窗口和消息驱动的设计机制,提供了类Windows API的GUI编程接口,对Windows API熟悉的应用程序开发人员可很容易的编写Hello China应用程序。其网络模块支持较为完善的TCP/IP协议栈,但同时剔除了TCP/IP协议中的一些相对较少用到的功能,比如带选项的IP、IP报文分片等功能,以使得整个协议栈紧凑可靠。当然,Hello China提供了完善的设备驱动程序架构,可随时扩展驱动程序以增加其功能。
开发环境
Hello China V1.75版本及之前版本的核心模块,是在Visual C++ 6.0开发环境下开发完成的。其引导模块和部分驱动程序,是用汇编语言开发,并使用NASM编译完成的。V1.75版本的Hello China,其内核绝大部分是由C语言编写。据初步统计,核心模块的代码量为5万行。在PC上的引导程序,大致有500行左右的汇编代码。
为便于移植到非PC平台,后续版本的Hello China,将考虑移植到GCC开发环境上。但是Hello China的设计思路和应用编程接口,将保持不变。
Hello China的源代码完全公开,其下载地址,可从其官方blog时实获取(连接请参考“扩展阅读”部分)。
开发接口
Hello China V1.75版本提供了上百个系统调用,应用程序开发者可通过调用这些系统服务,来开发基于Hello China的应用程序。在应用程序开发过程中,程序员只需要在程序源代码中包含Hello China提供的头文件(HCNKAPI.H),同时在连接的时候,把HCNLIB.LIB作为库文件即可,无需把全部Hello China源代码都包含到程序项目中。这与Windows和Linux通用操作系统的开发过程类似,但是与传统的嵌入式操作系统开发模式不同。传统的嵌入式操作系统开发模式,一般是把操作系统的源代码也要包含到项目中。
应用程序代码与操作系统核心代码能够完全分离,是因为系统调用机制的存在。系统调用机制虽然简化了应用程序开发过程,也使得操作系统与应用程序完全独立,但是却降低了系统执行效率。因为系统调用涉及到CPU执行上下文的切换等动作,消耗了一些不必要的CPU资源。Hello China也支持应用程序与操作系统“代码级集成”的开发机制,只要取消系统调用机制即可。这可提升系统整体运行效率。
Hello China提供的API接口,与Windows提供的API函数有“几分相像”,这主要是为了便于程序员能够快速熟悉Hello China的开发过程。下面通过一个代码片断,说明这种相似性:
DWORD HCNMain(LPVOID pData)
{
//HANDLE hFrameWnd = (HANDLE)pData; //pData is the handle of screen window,it is all application's parent window.
MSG msg;
HANDLE hMainFrame = NULL;
__WINDOW_MESSAGE wmsg;
//Create hello world's window.
hMainFrame = CreateWindow(WS_WITHBORDER | WS_WITHCAPTION,
150,
150,
600,
400,
StatWndProc,
NULL,//hFrameWnd,
NULL,
0x00FFFFFF,
NULL);
if(NULL == hMainFrame)
{
goto __TERMINAL;
}
//Message loop of this application.
while(TRUE)
{
if(GetMessage(&msg))
{
switch(msg.wCommand)
{
case KERNEL_MESSAGE_TIMER:
wmsg.hWnd = (HANDLE)msg.dwParam;
wmsg.message = WM_TIMER;
SendWindowMessage(wmsg.hWnd,&wmsg);
break;
case KERNEL_MESSAGE_WINDOW:
DispatchWindowMessage((__WINDOW_MESSAGE*)msg.dwParam);
break;
case KERNEL_MESSAGE_TERMINAL: //Post by PostQuitMessage.
goto __TERMINAL;
default:
break;
}
}
}
__TERMINAL:
if(hMainFrame)
{
DestroyWindow(hMainFrame);
}
return 0;
}
HCNMain函数与Windows的WinMain函数相同,是整个应用程序的入口。在这个函数的开始处,首先调用CreateWindow创建一个窗口,然后进入一个消息循环。这个过程与Windows的编程机制类似。在创建窗口的时候,也需要指定一个窗口函数,所有用户输入等的处理,都是在窗口函数中完成的。
当然,Hello China也支持完全字符模式的应用程序,这时候就无需创建窗口,但是必须有一个消息循环,如果你想要处理用户输入的话。当然,如果不处理任何输入,比如只打印出“Hello world”,则无需消息循环,只需要一个HCNMain函数即可。
应用场景
Hello China定位于高端智能嵌入式应用,其应用场景非常广泛。比如,传统的基于PC系统的固定应用,比如LCD显示器控制、银行ATM机、刷卡机等,都可以基于Hello China重新开发应用,而这种应用场景上的应用程序,以前都是基于Windows开发的。切换到Hello China以后,可大大降低成本,同时避免Windows系统的被侵入风险。
在云计算如火如荼的今天,云终端将是云计算基础架构的制胜环节,而云终端操作系统也是Hello China的应用领域。实际上,Hello China的V2.0版本(正在开发中),就是针对云终端进行定制开发的。该版本集成RDP协议功能,可通过远程桌面连接云服务器,作为轻量级的云终端。这对云服务运营商来说,将是一个增加用户黏性、提升整体竞争力的整体解决方案
另外的一个应用是物联网的感知层控制终端,即物联网操作系统,这是Hello China操作系统后续主要面向的场景。与传统的个人计算机或个人智能终端(智能手机、平板电脑等)上的操作系统不同,物联网操作系统有其独特的特征。这些特征是为了更好的服务物联网应用而存在的,运行物联网操作系统的终端设备,能够与物联网的其它层次结合的更加紧密,数据共享更加顺畅,能够大大提升物联网的生产效率。一些典型的物联网设备或个人消费电子设备,比如智能手环,物联网协议转换网关(比如把蓝牙转换为IP),监控摄像头,各类传感器等,都可以运行Hello China操作系统。
最新进展
为了更好的体现”物联网操作系统“的特征,更加聚焦物联网领域应用,”Hello China操作系统“已于2014年下半年,正式更名为”HelloX操作系统“。HelloX中的X可以代表任何东西。这样就貌似有点打招呼的意思,比如“Hello,car”,“Hello,ring”…,通过这个操作系统,你能够跟任何东西对话,符合物联网的含义。英文的口号是“HelloX,through which you can talk to everything.”。
除了更名之外,在2014年,Hello China操作系统发布了最新的V1.77版本,增加了很多特性,比如:
1. 成功移植到基于Cortex M3的STM32 MCU上,在多块开发板上进行了测试,性能稳定;
2. 成功完成lwIP协议栈到HelloX的移植,具备了完善的网络功能;
3. 成功完成一个WiFi协议栈(MR09)和有线以太网协议栈的移植,能够动态获取IP地址,并访问外网服务器;
4. 基于PC的版本,也成功移植到VS2010等开发环境上,并完善和增加了文件系统/GUI/可加载模块等功能,基本上就是一个功能完备的个人计算机操作系统了。
后续将聚焦物联网领域应用,进行进一步的开发。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市